package com.xinqi.modules.exam.paper.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xinqi.common.base.dto.CommonFileDTO;
import com.xinqi.common.base.dto.QuestionBaseDTO;
import com.xinqi.common.mybatis.data.entity.BaseEntity;
import com.xinqi.modules.exam.paper.enums.ExamStatusEnum;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 课程测评实体层
 *
 * @author: linkai
 * @date: 2023/07/02
 */
@Setter
@Getter
@TableName("co_course_exam_paper")
public class CourseExamPaperEntity extends BaseEntity {
    /**
     * 班级ID
     */
    @TableField(value = "class_id")
    private Long classId;
    /**
     * 用户ID
     */
    @TableField(value = "user_id")
    private Long userId;
    /**
     * 所属章节ID
     */
    @TableField(value = "chapter_id")
    private Long chapterId;
    /**
     * 名称
     */
    @TableField(value = "name")
    private String name;
    /**
     * 详情
     */
    @TableField(value = "content")
    private String content;
    /**
     * 总分
     */
    @TableField(value = "total_score")
    private BigDecimal totalScore;
    /**
     * 题目总数
     */
    @TableField(value = "question_total")
    private Integer questionTotal;
    /**
     * 题型总数
     */
    @TableField(value = "question_type_total")
    private Integer questionTypeTotal;
    /**
     * 主观题数量
     */
    @TableField(value = "subjective_question_num")
    private Integer subjectiveQuestionNum;
    /**
     * 客观题数量
     */
    @TableField(value = "objective_question_num")
    private Integer objectiveQuestionNum;
    /**
     * 题目内容
     */
    @TableField(value = "question_content")
    private List<QuestionBaseDTO> questionContent;
    /**
     * 附件列表
     */
    @TableField(value = "files")
    private List<CommonFileDTO> files;
    /**
     * 测评状态，1-未发布 2-定时发布  3-已开始 4-已结束 5-已发布
     */
    @TableField(value = "status")
    private ExamStatusEnum status;
    /**
     * 是否发布
     */
    @TableField(value = "is_release")
    private Integer isRelease;
    /**
     * 是否定时发布
     */
    @TableField(value = "is_timed_release")
    private Integer isTimedRelease;
    /**
     * 发布时间
     */
    @TableField(value = "release_time")
    private LocalDateTime releaseTime;
    /**
     * 开始时间
     */
    @TableField(value = "start_time")
    private LocalDateTime startTime;
    /**
     * 截止时间
     */
    @TableField(value = "end_time")
    private LocalDateTime endTime;
    /**
     * 是否生成分析报告
     */
    @TableField(value = "is_generate_assistant")
    private Integer isGenerateAssistant;
    /**
     * 扩展字段
     */
    @TableField(value = "extend")
    private String extend;
}
